今天在测试准备环境的时候,发现一些网络配置问题还处理不好,或者没有整体概念,特整理如下。主要包含:
- centOS 6 的网络基础配置
- centOS 7 的网络基础配置
常见的需求
常见的配置项
- 主机名称
- IP
- 动态,依赖于DHCP
- 静态,直接配置IP
- 子网掩码
- 网关
- DNS
- 防火墙
centOS 6
- redhat6 network guide
- redhat6 官方文档,网络部分
- redhat6 sysconfig 配置说明
- redhat6 官方文档,
sysconfig
相关配置
- redhat6 官方文档,
network主要配置文件
- /etc/hosts
- 配置host name & ip mapping
- 需要配置
127.0.0.1
- /etc/resolv.conf
- 配置 DNS
- /etc/sysconfig/network
- 配置 global interface
- /etc/sysconfig/network-scripts/ifcfg-interface-name
- 每个 interface 都需要配置
配置基础网络
主机名称
修改 /etc/sysconfig/network
文件,如下:
HOSTNAME=penguin.example.com
- 修改 network 文件会永久生效
- 需要重启网络服务或者重启操作系统
关于 HOSTNAME
的格式,redhat推荐:
- 小写
- 满足fully qualified domain name (FQDN),比如
host.example.com
。 - 不使用空格或dots(这个有点儿困惑,FQDN不就要求使用dot么)
也可以通过修改 /etc/hosts
文件来配置 HOSTNAME
,如:
192.168.1.2 penguin.example.com penguin
IP & 子网掩码
IP配置要在具体的网卡的配置文件中配置(文件名形如ifcfg-eth0)
下面是静态 IP 的配置 demo
DEVICE=eth0
BOOTPROTO=none
ONBOOT=yes
NETMASK=255.255.255.0
IPADDR=10.0.1.27
USERCTL=no
下面是基于 DHCP 的 IP 配置
DEVICE=eth0
BOOTPROTO=dhcp
ONBOOT=yes
关于interface config files的详细配置,参考这里。
配置完成后如何生效??如何check??
网关
在 /etc/sysconfig/network
中可以配置,如下:
GATEWAY=192.168.1.1
也可以在 ifcfg-eth0
中配置,如下:
GATEWAY=192.168.1.1
配置按照 /etc/sysconfig/network
ifcfg-eth0
的顺序被加载,最后读取到的 GATEWAY
的值是默认网关。查看默认网关的信息,可以使用:
route -n
DNS
在 /etc/resolve.conf
中配置,如下:
nameserver 100.2.22.2
另外 DNS 在 ifcfg-eth0
配置文件中也可以配置,如下:
# where address is a name server address to be placed in /etc/resolv.conf provided that the PEERDNS directive is not set to no.
DNS{1,2}=address
配置完成后即生效。通过 ping 具体的 HOSTNAME 来验证 DNS 是否生效。
防火墙
针对防火墙,一般是某些服务需要特定端口的权限。两种方式:
- 开发指定端口的权限
- 关闭防火墙服务
都是通过 iptables
完成的。具体可以参考:
centOS 7
- redhat7 network guide
- redhat 7 的网络指导手册
- 不得不吹比 6 的文档结构层次好,对新手更友好
7 与 6 相比,网络部分的变化还是挺大的。
配置基础网络
主机名称
分三种 hostname,分别是:
- static:对应 6 中的 hostname,与 6 中 hostname 类似
- transient:kernel 维护的 hostname,初始化取值自 static,可能被 DHCP 和 mDNS 改变
- pretty:对用户展示用的 UTF8 格式的 hostname
设置的工具建议使用 hostmanectl
,如下:
hostnamectl set-hostname name
修改完成可以通过:
hostnamectl status
来进行验证。
更详细的可以参考文档:
IP & 子网掩码
直接修改文件
文件位置是:/etc/sysconfig/network-scripts/ifcfg-eth0
静态 IP demo
DEVICE=eth0
BOOTPROTO=none
ONBOOT=yes
PREFIX=24
IPADDR=10.0.1.27
动态 IP demo
DEVICE=em1
BOOTPROTO=dhcp
ONBOOT=yes
MAC
& HWADDR
是可选的
另外还可以通过 ip
指令来配置,如:
# ip 命令的格式
ip addr [ add | del ] address dev ifname
# ip 的例子
ip address add 10.0.0.3/24 dev eth0
网关
可配置的有两个地方:
- /etc/sysconfig/network
GATEWAY
- 每个 interface 的配置文件中配置的
GATEWAY
最后一个读到的 GATEWAY
值是默认的网关。
NOTE
在centOS 7 中,/etc/sysconfig/network 不建议使用。
最好的方式是通过 DHCP 获取的 GATEWAY
。配置完成后,通过 ip route
来验证网关配置是否正确
DNS
除了跟 centOS 6 相同的修改 resolve.conf
文件之外,也可以直接在 interface 的配置文件中配置,如:
DNS1=ip-address
DNS2=ip-address
ip-address
是 DNS server 的地址。
防火墙
在centOS 7 中,防火墙建议使用firewalld
来管理,如:
#开启
systemctl start firewalld
#关闭
systemctl stop firewalld
如果在firewalld
开启的情况下,增加一条规则:
#开启https和http
firewall-cmd --zone=public --add-service http --permanent
firewall-cmd --zone=public --add-service https --permanent
firewall-cmd --reload
# 开启rabbitmq的management的15672
firewall-cmd --zone=public --add-port 15672/tcp --permanent
firewall-cmd --reload
更多复杂的管理,参考文章:introduce firewalld on centos